package com.liuyanzhao.blog.mapper.custom;

import com.liuyanzhao.blog.entity.User;
import com.liuyanzhao.blog.entity.custom.UserCustom;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 
 * @author Baokai Wang
 * 获取用户列表
 * @CrateTime: 2019年6月23日
 */

@Repository
public interface UserMapperCustom {
	
	/**
	 * 
	 * @Description: 获得用户列表
	 * @return List<UserCustom> 返回符合条件的子类
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 上午9:58:07
	 */
	public List<UserCustom> listUser() throws Exception;

	/**
	 * 
	 * @Description: 根据用户名或Email获得用户
	 * @param str
	 * @return User
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 上午9:58:43
	 */
	public User getUserByNameOrEmail(String str) throws Exception;

	/**
	 * 
	 * @Description: 根据用户名查用户
	 * @param name
	 * @return User
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 上午9:59:03
	 */
	public User getUserByName(String name) throws Exception;

	/**
	 * 
	 * @Description: 根据Email查询用户
	 * @param email
	 * @return User
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 上午9:59:20
	 */
	public User getUserByEmail(String email) throws Exception;

	/**
	 * 
	 * @Description: 用户的文章数
	 * @param id
	 * @return Integer
	 * @throws Exception
	 * @author Baokai Wang
	 * @CreateDate: 2019年6月23日 上午9:59:35
	 */
	public Integer countArticleByUser(@Param(value = "id") Integer id) throws Exception;
}
